home *** CD-ROM | disk | FTP | other *** search
- #include "oath/hashSet.h"
-
- #include "oath/character.h"
-
- #include "oath/localToken.h"
-
- #include "timer.h"
-
- #include <iostream.h>
-
- /////////////////////////////////////////////////////////////////////////////
- // Test of characters and tokens
-
- main ()
- {// Test Tokens ////////////////////
-
- tokenA T1 = localTokenA::make();
- tokenA T2 = localTokenA::make();
- tokenA T3 = localTokenA::make();
- tokenA T4 = localTokenA::make();
-
- characterA C1 = characterA::make('1');
- characterA C2 = characterA::make('2');
- characterA C3 = characterA::make('3');
- characterA C4 = characterA::make('4');
-
- // Hash Sets /////////////////////
-
- hashSetA S1 = hashSetA::make();
- hashSetA S2 = hashSetA::make(2);
- hashSetA S3 = hashSetA::make(5);
-
- // Insertion /////////////////////
-
- S1 << T2 << C2 << T3 << C3 << T4 << C4;
- S2 << T1 << C1 << T3 << C3 << T4 << C4;
- S3 << T1 << C1 << T2 << C2 << T4 << C4;
-
- // Contains ////////////////////
-
- if(!S1.contains(T1) && !S1.contains(C1) &&
- S1.contains(T2) && S1.contains(C2) &&
- S1.contains(T3) && S1.contains(C3) &&
- S1.contains(T4) && S1.contains(C4))
- cout << "Success 1" << endl;
- else
- cout << "Fail 1" << endl;
-
- if( S2.contains(T1) && S2.contains(C1) &&
- !S2.contains(T2) && !S2.contains(C2) &&
- S2.contains(T3) && S2.contains(C3) &&
- S2.contains(T4) && S2.contains(C4))
- cout << "Success 2" << endl;
- else
- cout << "Fail 2" << endl;
-
- if( S3.contains(T1) && S3.contains(C1) &&
- S3.contains(T2) && S3.contains(C2) &&
- !S3.contains(T3) && !S3.contains(C3) &&
- S3.contains(T4) && S3.contains(C4))
- cout << "Success 3" << endl;
- else
- cout << "Fail 3" << endl;
-
- // Removal /////////////////////
-
- S1.remove(T2).remove(C2);
- S2.remove(T3).remove(C3);
- S3.remove(T4).remove(C4);
-
- // Contains ////////////////////
-
- if(!S1.contains(T1) && !S1.contains(C1) &&
- !S1.contains(T2) && !S1.contains(C2) &&
- S1.contains(T3) && S1.contains(C3) &&
- S1.contains(T4) && S1.contains(C4))
- cout << "Success 4" << endl;
- else
- cout << "Fail 4" << endl;
-
- if( S2.contains(T1) && S2.contains(C1) &&
- !S2.contains(T2) && !S2.contains(C2) &&
- !S2.contains(T3) && !S2.contains(C3) &&
- S2.contains(T4) && S2.contains(C4))
- cout << "Success 5" << endl;
- else
- cout << "Fail 5" << endl;
-
- if( S3.contains(T1) && S3.contains(C1) &&
- S3.contains(T2) && S3.contains(C2) &&
- !S3.contains(T3) && !S3.contains(C3) &&
- !S3.contains(T4) && !S3.contains(C4))
- cout << "Success 6" << endl;
- else
- cout << "Fail 6" << endl;
-
- // Speed Test ////////////////////
-
- timer Timer;
- int Count = 0;
-
- Timer.start();
- for(int I = 0; I < 100000; ++I)
- {if(!S1.contains(T1) && !S1.contains(C1) &&
- !S1.contains(T2) && !S1.contains(C2) &&
- S1.contains(T3) && S1.contains(C3) &&
- S1.contains(T4) && S1.contains(C4))
- ++Count;
- }
- Timer.split();
-
- cout << "Count should be 100000: " << Count << endl;
- cout << "Time to process 100000*8 contains calls:" << endl
- << "\tReal Time = " << Timer.real() << " ms" << endl
- << "\t CPU Time = " << Timer.cpu() << " ms" << endl;
-
- }
-
-
-